shell 编程三剑客之二:sed 详解

您所在的位置:网站首页 shell send命令详解 shell 编程三剑客之二:sed 详解

shell 编程三剑客之二:sed 详解

2024-07-15 19:24| 来源: 网络整理| 查看: 265

选项:

-n, --quiet, --silent        屏蔽默认输出

-e script, --expression=script        指定需要执行的 sed 指令

-f script-file, --file=script-file        指定需要执行的 sed 脚本文件

--follow-symlinks        跟随软链接

-i[SUFFIX], --in-place[=SUFFIX]        直接修改原文件,如果提供了SUFFIX,备份数据

-l N, --line-length=N        指定每行的长度

--posix        使 GNU 扩展不生效

-E, -r, --regexp-extended        支持扩展正则

-s, --separate        将多个文件视为各自独立的

--sandbox        在沙盒模式执行(e/r/w 不生效)

-u, --unbuffered        从输入文件加载最少的数据,更频繁地刷新输出缓冲区

-z, --null-data        行分隔符配置为空

--help        帮助文档

--version        版本信息

如果没有给定 -e 或 -f,则第一个非选项参数被视为脚本,后边的所有参数被视为输入文件。如果没有输入文件,将会操作标准输入的数据。

操作指令: 1. 不和行定位一起使用的指令:

: label        定义在 b 或 t 指令中使用的 label

# comment        注释

2. 和 0 或 1 个行定位一起使用的指令:

=        打印当前行号

a \

text        在匹配行后一行追加 text

i \

text        在匹配行前一行插入 text

q [exit code]       立刻退出 sed 脚本,如果自动打印没有失效,打印当前模式空间内容

Q [exit code]        立刻退出 sed 脚本

r filename        追加 filename 中读取的内容

R filename        追加 filename 中一行内容,每次发出指令,读取一行

3. 和范围行定位一起使用的指令:

b label        跳转至 label 所在位置,如果没有提供 label,则跳转到指令的结尾

c \

text        指定行的内容替换成 text

d        删除指定行整行内容

D        删除模式空间中的第一行

g G        复制/追加保持空间内容到模式空间

h H        复制/追加模式空间内容到保持空间

l        把模式空间中的内容打印出来,非打印字符用两位ASCII码表示

l width        

n N        读取/追加下一行到模式空间

p        打印当前模式空间的内容

P        打印模式空间的第一行

s/pattern/replacement/flags

flags:n(1-512)表示需要替换的第n个pattern匹配的内容,g表示所有pattern都被替换,p表示把模式空间的内容打印, w后边接文件名表示把模式空间的内容输出到该文件

replacement的特殊符号:&表示pattern,\n表示在pattern里第n个用\(\)框起来的结构,\表示转义或换行。\L后边的字符都转成小写字母,\l后边的一个字符转成小写字母,\U后边的字符都转成大写字母,\u后边的一个字符转成大写字母,\E使因\U或\L发生的字母转换结束。

s///:表示将字符替换为空

t label        有条件跳转至 label 所在位置,如果没有提供 label,则跳转到指令的结尾

T label        条件不满足时跳转至 label 所在位置,如果没有提供 label,则跳转到指令的结尾

w filename        当前模式空间内容写入 filename

x        交换模式空间与保持空间的内容

y/source/dest/        source 中的每个字母替换成 dest 中对应位置的字母

定位方式:

number        行号

first~step        行号为 first 开始,步进 step

$        最后一行

/regexp/        正则表达式

\cregexpc        正则表达式,c 是任意字符

0, addr2        以“匹配的第一个地址”状态开始,直到找到addr2,addr2 是正则表达式

addr1, +N        addr1 开始及后面的 N 行

addr1, ~N        add1 开始,到下一个 N 的倍数的行

addr1, addr2        addr1 开始,addr2 结束



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3